The present invention relates to business software solutions. More specifically, the present invention relates to a platform that supports authoring and running business software applications.
Integrated business solutions typically include multiple functional products that support business segments and interact with enterprise hub and spoke networks. Such products include software applications that run financial information, human resource management, customer relationship management, professional services automation, distribution, supply chain management, and more.
In the past, achieving such integrated business solutions has been very difficult. Prior business applications have primarily focused on, and been limited to, business process automation of internal and back office functions. While this type of internal efficiency is important, it does not address relationships outside the business with individuals who are customers, suppliers, partners, financiers and employees.
To date, only the largest organizations have extended business process automation outside of their enterprise to these constituents. The cost and complexity of implementing these solutions has simply been prohibitive, particularly for the small and medium sized organizations.
One reason that the cost is so high is that one approach to designing and marketing computer software-related products is to focus on horizontal functionality such that the product is broadly applicable across large industry segments, and across many different countries. Such a system may also desirably promote an after market to meet the unique needs of specific vertical target markets and specific companies. Similarly, the product may desirably promote a customer's ability to change or customize the product to their individual needs. Such needs may be, for example, the requirement that different business products operate in an integrated fashion, even though they are from different vendors. This often requires the applications to be modified or customized so that they are compatible with one another.
If the product cannot be extended to meet the unique needs of a customer, it essentially requires a customer to change its business to match the software which the customer has just purchased. Of course, these types of systems are resisted by customers, since changes to business activities can be costly and time consuming.
There are a number of different techniques which have been conventionally used in order to enable a system to be customized. Such conventional techniques include, for example, source code modification. This technique entails providing customers with copies of the source code for the product. It thus allows a well trained practitioner to change significant amounts of content, and those changes can be made to look as if they are part of the product, because in effect, they are part of the modified source code product.
However, source code modification carries with it significant drawbacks. For example, source code modification costs a significant amount of money prior to using the product, because the user or customer must often hire expensive consultants and developers who have been specifically trained in the nuances of how the product is built. The user must then endure the risk of estimating a problem, which is a very difficult and imprecise task. Even if these problems can be overcome and persevered, the result is modified source code. When the manufacturer of the original source code ships additional software, such as bug fixes, updates, and new versions, the customer is either forced to again hire talented engineers or developers (and hopefully the same ones who made the original modifications), in order to merge those modifications into the new source code shipped by the manufacturer, and to resolve issues, one-by-one, as they arise in the newly modified source code. Alternatively, the user can simply go without the bug fixes and new features that may benefit the user's business.
In addition, source code modification makes it extremely difficult to simply purchase add-on modules “off the shelf” from multiple different vendors, because each of those vendors will likely have to modify the source code as well to accommodate their specific off the shelf modules. Consequently, not only must the manufacturer ship the source code of the base product, but each add-on vendor must ship their source as well. The user must then conduct some sort of adhoc merge process or synthesize a single product out of these random sets of source code. Of course, this results in a brittle set of code that is virtually guaranteed to have problems with upgrades or when any one of the vendors ships a bug fix.
Source code modification also suffers from the problem that only one organization in the world (the specific developers or engineers who modified the source code) knows how the modified source code product was built. Therefore, it is difficult, if not impossible, to achieve economies of scale and product support for any of the products running at the customer site.
The problems with source code modification increase significantly when, even within a single customer, there exists a diverse set of users with a diverse set of needs and preferences. Every time one of those users changes the product through the source code modification strategy in order to accommodate their particular needs, the customer employing those users, in effect, ends up with a new source code base. In other words, the customer does not only have a single custom code base, but it may actually have many custom code bases, depending upon how many specific users or departments within the customer have modified the code base. Again, each time a bug fix is published or a change is made to a customization that applies to all users, the customer must go through some sort of merge process with all other copies of the source which have been made.
This is only a partial list of the many problems associated with source code modification techniques. These problems can result in a great deal of difficulty for the management of the customer, and the employees themselves, in attempting to obtain an integrated business solution.